競技プログラミングでバグった時のためのチェックリスト: 再帰DFS ・ バックトラック法 ( 手順 の 全探索 など)
状態の評価は、状態遷移辺ループの前でやる
手順選びは基本的に状態遷移辺を選ぶループの中でやってしまう
つまり、どの手順を選ぶかの情報は
どこでリセットすればよいか、その対応関係も見えやすくなる。
set, mapをiterableとして使う時には、ループ中で変更を行っていないか 手順を一手戻す時は、returnをする前に行う。
code:cpp
// FIXED: dfsを終えた後は、コマを取り除く必要がある。
// FIXED: かつ、returnする可能性があるコードの前で状態をリセットしなくてはならない。
出力後の結果の扱いを間違えていないか?
code:cpp
// FIXED: dfsの出力に == 1をつけるの忘れてた てへぺろ☆
std::cout << (dfs(1, 0, 0, placable) == 1 ? "Takahashi" : "Aoki") << std::endl;